package com.group2.operations.mapper;

import com.group2.operations.common.api.ApiResult;
import com.group2.operations.model.ProcessState;
import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Repository;

import java.util.Date;

@Repository
@Mapper
public interface FlowMapper {

    /**
     * 插入流程状态的记录
     * @param processId 流程ID
     * @param state 状态描述
     * @param time 发生时间
     */
    @Insert("insert into `process-state`(id, state1, time1) values(#{processId}, #{state}, #{time})")
    void insertFlowState(@Param("processId") String processId, @Param("state") String state, @Param("time") Date time);


    /**
     * 通过流程Id查询流程所有的历史事件
     * @param processId
     * @return
     */
    @Select("select * from `process-state` where id = #{processId}")
    ProcessState queryHistoryByProcessId(String processId);

    /**
     * 部门管理员track流程的记录
     * @param processId 流程
     * @param state 状态描述
     * @param time 发生时间
     * @return
     */
    @Update("update `process-state` set state2=#{state2}, time2=#{time2} where id=#{id}")
    void adminDepInsertFlowState(@Param("id") String processId, @Param("state2") String state, @Param("time2") Date time);

    /**
     * 公司管理员track流程的记录
     * @param processId 流程
     * @param state 状态描述
     * @param time 发生时间
     */
    @Update("update `process-state` set state3=#{state3}, time3=#{time3} where id=#{id}")
    void adminCoInsertFlowState(@Param("id") String processId, @Param("state3") String state, @Param("time3") Date time);
}
